S3バケットへのアクションをSNSでEメールに通知してみた
はじめに
こんにちは 岩崎 です。
本記事では、S3のバケットに生成・削除アクションがあった場合に、SNSでEmailに通知されるようにしてみました。
S3バケットを作成
まずはS3バケットを作成します。
今回は名前を決め、他の設定は特に変更はありません。
グローバルで一意の名前を入力し、作成をクリックしバケットを作成してください。
SNSトピックの作成
次にSNSのトピックの作成と設定をします。
トピックの作成をクリックします。
タイプはスタンダードを選択。
名前を今回は「S3ObjectEvent」とします。
入力ができたら、トピックの作成 をクリックします。
サブスクリプションの作成
次にサブスクリプションを作成します。
作成したトピックを選択し、「サブスクリプションの作成」をクリックします
。
プロトコルはEメールを選択。
エンドポイントに通知を受け取りたいEメールアドレスを入力します。
以上の設定が完了したら、サブスクリプションの作成をします。
サブスクリクションが作成されると、以下のようにサブスクリプションに追加されます。
設定したEメールアドレスに通知が届くので、「Confirm subscription」をクリックします。
ステータスが確認済みになったことを確認してください。
アクセスポリシーの設定
次にアクセスポリシーを設定します。
作成されたトピックを選択し、編集をクリックします。
アクセスポリシー - オプションがあるので、下記に変更します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "s3.amazonaws.com"
},
"Action": "SNS:Publish",
"Resource": "arn:aws:sns:ap-northeast-1:123456789012:MySNSTopic",
"Condition": {
"ArnLike": {
"aws:SourceArn": "arn:aws:s3:::my-s3-bucket"
}
}
}
]
}
"Resource"と"aws:SourceArn"は自身が作成したSNSトピックとS3バケット名に変更してください。
入力ができたら、「変更を保存」をします。
イベント通知の作成
次にS3でイベント通知の作成をします。
作成したバケットに移動し、プロパティの中にある「イベント通知」から「イベント通知の作成」を選択します
イベント名を設定します。
イベントタイプを今回は「すべてのオブジェクト作成イベント」と「すべてのオブジェクト削除イベント」にチェックを入れます。
さらに下の進み、送信先を「SNSトピック」を選択、「SNSトピックから選択する」
SNSトピックのプルダウンから、先ほど作成したトピックを選択します。
その他はそのままで問題ありません。
完了したら、変更を保存をクリックします。
S3にアクションしてみる
上記が完了したら、該当のバケットにアップロードと削除をしてみます。
画像やテキストファイルなどなんでも良いのでアップロードしてみると、先ほどと同様に設定したEメールアドレスに通知されます。
アップロードした際は「"eventName":"ObjectCreated:Put"」
削除をした際は「"eventName":"ObjectRemoved:Delete"」がメールに含まれているかと思います。
最後に
今回はオブジェクトの作成・削除の際に通知を送るようにしてみましたが、すべてを通知してしまうと、数が膨大になってしまう可能性もあるので、削除された場合などに限定しても良いかと思います。
参考になりましたら幸いです。
参考
Amazon SNSトピックの作成 - Amazon Simple Notification Service
Amazon S3 イベント通知 - Amazon Simple Storage Service
アノテーション株式会社について
アノテーション株式会社はクラスメソッドグループのオペレーション専門特化企業です。サポート・運用・開発保守・情シス・バックオフィスの専門チームが、最新 IT テクノロジー、高い技術力、蓄積されたノウハウをフル活用し、お客様の課題解決を行っています。当社は様々な職種でメンバーを募集しています。「オペレーション・エクセレンス」と「らしく働く、らしく生きる」を共に実現するカルチャー・しくみ・働き方にご興味がある方は、アノテーション株式会社 採用サイトをぜひご覧ください。